package demo3;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;

@Component
public class Person {
    /*
        当一个类中需要使用另一个类时,Spring要求我们将该类作为属性定义在当前类中
        以便Spring以"依赖注入"的形式将被依赖的类创建好然后通过属性注入到当前类中供其使用

        Person在实现功能时需要使用到Shirt类,那我们就称为:Person需要"依赖"Shirt

     */
    @Autowired
    //private Shirt shirt;
    //private Sweater sweater;
    /*
        Spring容器在自动装配时,会进行类型匹配,如果属性的类型是一个接口,那么Spring会自动寻找它的实现类来进行自动装配.
        如果Spring同时找到多个实现类,那么自动装配时会抛出异常,Spring容器无法做出决定到底应当用哪个实现类注入这里
        此时可以为这些实现类的@Component注解添加一个参数,等同于为该组件取一个名字

     */
    @Qualifier("summer")
    private Clothes clothes;

    @Override
    public String toString() {
        return "Person{" +
                "clothes=" + clothes +
                '}';
    }
}
